// 78 medium 子集

// 给定一组不含重复元素的整数数组 nums，返回该数组所有可能的子集（幂集）。
// 说明：解集不能包含重复的子集。
//
// 示例:
// 输入: nums = [1,2,3]
// 输出:
//     [
//         [3],
//         [1],
//         [2],
//         [1,2,3],
//         [1,3],
//         [2,3],
//         [1,2],
//         []
//     ]



/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsets = function(nums) {
    if(!nums.length) return [[]]
    let resultArr = [[], [nums[0]]]
    for(let i = 1; i < nums.length; i++){
        let arr = []
        for(let j = 0; j < resultArr.length; j++){
            arr.push([nums[i], ...resultArr[j]])
        }
        resultArr = resultArr.concat(arr)
    }
    return resultArr
};

console.log(subsets([1,2,3]))